package com.offics.loan.domain.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 银行卡实体
 */
@Data
@TableName("loan_bank_card")
public class BankCard {

    /**
     * 银行卡ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 银行卡号
     */
    private String cardNo;

    /**
     * 银行名称
     */
    private String bankName;

    /**
     * 银行代码
     */
    private String bankCode;

    /**
     * 持卡人姓名
     */
    private String holderName;

    /**
     * 预留手机号
     */
    private String phone;

    /**
     * 卡类型（0-储蓄卡，1-信用卡）
     */
    private Integer cardType;

    /**
     * 是否默认（0-否，1-是）
     */
    private Integer isDefault;

    /**
     * 状态（0-禁用，1-启用）
     */
    private Integer status;

    /**
     * 是否删除（0-未删除，1-已删除）
     */
    @TableLogic
    private Integer deleted;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    /**
     * 检查银行卡是否启用
     *
     * @return 是否启用
     */
    public boolean isEnabled() {
        return status != null && status == 1;
    }

    /**
     * 检查银行卡是否为默认
     *
     * @return 是否为默认
     */
    public boolean isDefault() {
        return isDefault != null && isDefault == 1;
    }

    /**
     * 获取银行卡掩码号（前4后4，中间用*代替）
     *
     * @return 银行卡掩码号
     */
    public String getMaskedCardNo() {
        if (cardNo == null || cardNo.length() < 8) {
            return cardNo;
        }
        int length = cardNo.length();
        return cardNo.substring(0, 4) + "*".repeat(length - 8) + cardNo.substring(length - 4);
    }
}